#include "VCAN_FUN.h"


//-------------------------------------------------------------------------------------------------------------------
//  @brief      绝对值函数
//  @param      dat             需要求绝对值的数
//  @return     int             返回绝对值
//  @since      v1.0
//  Sample usage:               dat = myabs(dat);//将dat变成正数
//-------------------------------------------------------------------------------------------------------------------
int  myabs(int dat)
{
    if (dat >= 0)  return dat;
    else        return -dat;
}


//-------------------------------------------------------------------------------------------------------------------
//  @brief      软件延时
//  @param      t               延时时间
//  @return     void
//  @since      v1.0
//  Sample usage:
//-------------------------------------------------------------------------------------------------------------------
void my_delay(long t)
{
    while (t--);
}


//-------------------------------------------------------------------------------------------------------------------
//  @brief      限幅
//  @param      x               被限幅的数据
//  @param      y               限幅范围(数据会被限制在-y至+y之间)
//  @return     float           限幅之后的数据
//  @since      v1.0
//  Sample usage:               float dat = limit(500,300);//数据被限制在-300至+300之间  因此返回的结果是300
//-------------------------------------------------------------------------------------------------------------------
float limit(float x, uint16 y)
{
    if (x > y)             return y;
    else if (x < -y)       return -y;
    else                return x;
}


//-------------------------------------------------------------------------------------------------------------------
//  @brief      双边限幅
//  @param      x               被限幅的数据
//  @param      a               限幅范围左边界
//  @param      b               限幅范围右边界
//  @return     float           限幅之后的数据
//  @since      v1.0
//  Sample usage:               int16 dat = limit_ab(500,-300，400);//数据被限制在-300至+400之间  因此返回的结果是400
//-------------------------------------------------------------------------------------------------------------------
int16 limit_ab(int16 x, uint16 a, uint16 b)
{
    if (x < a) x = a;
    if (x > b) x = b;
    return x;
}

float power(float n)  //计算10的n次方
{
    float value_z = 1;
    if (n >= 0)
        for (int i = 0; i < n; i++)
            value_z *= 10;
    else
        for (int i = 0; i > n; i--)
            value_z /= 10;
    return value_z;
}